*****************************************************************
*																*
*			RCS 2005 Datenmodifikation							*
*																*
*****************************************************************



dir
use 2005\ZA4991.dta, clear  

set more off

* Erst mal Gro�schreibung der Variablen ver�ndern
foreach var of varlist ID-DIFFW1W2 {
rename `var', lower
}


*--------------------------------------------
* Wochen und Tage 
*--------------------------------------------

* Laufindizes, die bei 0 anfangen
tab woche
gen week_count = woche-32
tab week_count
lab var week "Woche ab Woche 0"

tab day
gen day_count = day-1
lab var day_count "Tag"

* Woche oder Tage bis zur Wahl
gen week = woche-37
rename day tag
tab datum //letzter Vorwellentag 1 Tag vor Wahl
gen day = tag-42
tab day

*--------------------------------------------------------
* Wahlabsicht
*--------------------------------------------------------
lookfor Wahlabsicht
fre q4

lab define wabsfull ///
	1 "CDU/CSU" ///
	4 "SPD" ///
	5 "FDP" ///
	6 "Gr�ne" ///
	7 "Die Linke" ///
	206 "NPD" ///
	215 "Piraten" ///
	322 "AFD" ///
	801 "andere Partei" ///
	888 "wei� nicht" ///
	999 "Nichtw�hler"

gen wabsfull = q4 if q3<=3 | q3==6				//nur f�r W�hler
recode wabsfull (1=4) (2=1) (4=5) (3=6) (5=7) 	///
	(7=206) (6 9/17=801) (98=888) (99=.) (97=999)
replace wabsfull=999 if q3>3 & q3~=6
lab val wabsfull wabsfull

tab wabsfull q4, m		

* Dummies f�r jede Auspr�gung bilden
tab wabsfull, gen(wabs)
/*Vorsicht, die neuen wabs-Variablen haben andere Suffix-Zahlen
als die Auspr�gung*/

tab wabsfull wabs1, m

* Stimmenanteile f�r jede Partei (gewichtet)
foreach var of varlist wabs1-wabs9 {
gen mean`var' = .
}

forvalues num=-5/0 {
foreach var of varlist wabs1-wabs9 {
	sum `var' [aweight=g_stdwn] if week==`num'
	replace mean`var' = r(mean) if week==`num'
}
}


/*
graph twoway connected meanwabs8  ///
	meanwabs9 meanwabs1 meanwabs2 meanwabs3 ///
	meanwabs4 woche, sort ///
	ylabel(0(0.1)0.5) ///
	legend(label (1 "wei� nicht") label (2 "werde nicht w�hlen") ///
	label (3 "CDU/CSU") label (4 "SPD") ///
	label (5 "FDP") label (6 "Gr�ne")) ///
	color(gs8 blue gs0 maroon gold dkgreen) ///
	scheme(s1color)
*/
	
//dynamischer Wahlkampf: "wei� nicht" nimmt 2 Wochen
//sch�n ab, ist aber kurz vor Wahl immer noch sehr hoch


*---------------------------------------
* Wahlentscheidung (Nachwahl)
*----------------------------------------

lookfor stimme
fre p3c
recode p3c (1=4) (2=1) (4=5) (3=6) (5=7) 	///
	(7=206) (6 9/17=801) (99 98=.) (0 95 96=999), gen(vote)
lab val vote wabsfull

fre vote
tab vote p3c, m

*------------------------------------------------
* Pr�dispositionen
*--------------------------------------------------

* Parteiidentifikation: Dummies
lookfor PID
fre q66

gen pidunion = q66>=2 & q66<=4
gen pidspd = q66==1
gen pidfdp = q66==6
gen pidgru = q66==5
gen pidlin = q66==7
gen pidand = q66==8
gen pidno = q66==9 | q66==98		//wer nicht wei�, ob er eine
											//PID hat, hat wohl keine
											
gen pidreg = pidspd==1 | pidgru==1
gen pidopp = pidunion==1 | pidfdp==1 | pidlin==1
gen pidother = pidand==1

lab var pidunion "Anh�nger Union"
lab var pidspd "Anh�nger SPD"
lab var pidfdp "Anh�nger FDP"
lab var pidgru "Anh�nger Gr�ne"
lab var pidlin "Anh�nger Linke"
lab var pidand "Anh�nger anderer Partei"
lab var pidno "Keine PID"
lab var pidreg "Regierungsanh�nger" 
lab var pidopp "Oppositionsanh�nger"
lab var pidother "Anh�nger von anderen Parteien (nicht im BT)"


foreach var of varlist pid* {
replace `var' = . if q66==99  //Missings rausschmei�en
}

tab q66 pidunion, m			//Kontrolle
tab q66 pidspd, m
tab q66 pidgru, m
tab q66 pidno, m

* f�r alternativspezifische Analysen: Parteien bekommen
* gleiche Nummer wie in Vote-Variable
gen pid1 = pidunion
gen pid4 = pidspd
gen pid5 = pidfdp
gen pid6 = pidgru
gen pid7 = pidlin
gen pid801 = pidand


* Parteiidentifikation: St�rke
lookfor Staerke
tab q67 q66, m

mvdecode q67, mv(8/9 0)
gen pidstr = 6-q67		//Skala umdrehen: Hohe Werte sollen hohe St�rke bedeuten
replace pidstr = 0 if pidno==1	//St�rke=0, wenn keine PID

tab pidstr pidno, m

lab var pidstr "St�rke PID"

* Politisches Interesse
tab q1, m
gen polint=q1
mvdecode polint, mv(9)
replace polint = 5-polint		//Skala umdrehen
lab var polint "Politisches Interesse"
lab define polint 0 "keins" 4 "sehr hoch", replace
lab val polint polint
tab polint q1


*---------------------------------------------------------
* Stimmt Wahlentscheidung (Nachwahl) mit PID �berein?
*---------------------------------------------------------

gen votepidmatch = . 

foreach num of numlist 1 4 5/7 801 {
replace votepidmatch = 1 if pid`num'==1 & vote==`num'
replace votepidmatch = 0 if (pid`num'~=1 & vote==`num') ///
	| (pid`num'==1 & vote~=`num')
}

replace votepidmatch = 0 if vote==999 	//bei Nichtw�hlern stimmt Entscheidung auch nicht mit PID �berein
replace votepidmatch = . if vote==. | pidunion==.

list pidunion-pidand vote votepidmatch 

*------------------------------------------------------------
* Konfrontation mit politischen Informationen
*------------------------------------------------------------

* Politische Gespr�che:
/* �ber zwei Variablen: Einmal mit Familie und einmal
mit Arbeitskollegen */

fre q35_a q35_c
gen help1 = 0 if q35_a==0 | q35_a==10
replace help1 = q35_a-10 if q35_a>10
replace help1 = . if help1>=88
tab help1 q35_a

gen help2 = q35_c-10 if q35_c>=10
mvdecode help2, mv(88 89)
tab help2 q35_c

egen talk = rowmean(help1 help2)
drop help1 help2

lab var talk "H�ufigkeit politischer Gespr�che"

*TV-Nachrichten
fre q34_d q34_e

gen news = 0 if q34_d<=10 | q34_d==98
replace news = q34_d-10 if q34_d>10 & q34_d<98
tab q34_d news, m
bysort woche: sum news

gen newsprivat = 0 if q34_e<=10  | q34_e==97 | q34_e==98
replace newsprivat = q34_e-10 if q34_e>10 & q34_e<97
tab q34_e newsprivat, m

*Politische Informationen Internet
/*Und nutzen Sie politische Informationsangebote
im Internet? Gemeint sind alle Websites von Zeitungen,
Nachrichtensendungen, Parteiseiten, politische Blogs*/
gen internet = 0 if q34_f<=10 | q34_f==98
replace internet = q34_f-10 if q34_f>10 & q34_f<98
tab internet q34_f, m

* pers�nlicher Wahlkampfkontakt
/* Frageformulierung: 
Hat in der letzten Zeit ein Kandidat oder sonst von einer
Partei versucht, Sie davon �berzeugen, ihn oder die Prtei
zu w�hlen? 
Sehr eng, nur pers�nlicher Kontakt */

fre q39*

tab q39_01 day

egen contact_pers = anycount(q39_02-q39_07), values(1)
replace contact_pers = . if q39_09==1
fre contact_pers

* Parteikontakt �ber Fernsehen, Presse etc.
lookfor werbung
fre q34_g 
tab q34_g week 		//wird nur in den letzten 3 Wochen erhoben

fre q34_g
gen contact_impers = q34_g
mvdecode contact_impers, mv(97/99)
replace contact_impers = contact_impers-10  if q34_g>0
fre contact_impers

* Zeitung 
* An wie vielen Tagen der vergangenen Woche Berichte
* in �berregionaler Zeitung gelesen?
lookfor Informationsquellen
fre q34_c

* �berregionale 
gen natpaper = q34_c
mvdecode natpaper, mv(98/99)
replace natpaper = (natpaper-10) if natpaper>0
tab natpaper q34_c

* Lokale
fre q34_a
gen localpaper = q34_a
mvdecode localpaper, mv(98 99)
replace localpaper = (localpaper-10) if localpaper>0
tab q34_a localpaper, m


* Operationalsierung so wie 2009 & 2013: Tage der am
* h�ufigsten gelesenen Zeitung

egen paper = rowmax(natpaper localpaper)
list natpaper localpaper paper if localpaper==.
fre paper


*----------------------------------------------------
* Soziodemographie
*----------------------------------------------------

* Geschlecht
lookfor geschlecht
fre q41
gen weiblich = q41==2
tab weiblich, m

* Interviewer
lookfor interviewer
tab iname
gen interviewer = iname


* Alter
lookfor geburtsjahr
fre q40
mvdecode q40, mv(9998 9999)

gen alter = 2005-q40
fre alter


* Bildung
lookfor Schul
tab q42

gen educlow = q42==1 | q42==2
gen educhigh = q42==5
replace educlow = . if q42>=6
replace educhigh = . if q42>=6

tab q42 educlow, m








